The accurate diagnosis of faults is an increasingly important aspect of testing integrated circuits, especially in view of ever-increasing gate counts and shrinking feature sizes. For circuits that do not utilize compression techniques during testing, fault diagnosis is relatively straightforward. For circuits that have embedded compression hardware, however, accurate fault diagnosis presents a formidable challenge.
Automated fault diagnosis (e.g., diagnosis based on test responses from test patterns generated using automated test pattern generation (“ATPG”) or built-in self-test hardware, such as Logic BIST) is a desirable component of an overall failure-analysis process. Automated fault diagnosis is generally used to predict the location of a failure in a CUT and has applications in such fields as silicon debugging, yield learning, and yield improvement. Given a set of failing test responses (e.g., failing signatures or error signatures) to a set of test patterns, an automated fault diagnosis tool desirably identifies the suspect fault sites (fault candidates) that best explain the failures. The suspect sites identified can help locate the physical cause of the fault and be used to guide failure analysis at the physical level.
Conventional logic diagnostic tools for scan-based tests often use full bit-level fail sets. These fail sets typically consist of the entire bit-level test response in which an unexpected or faulty value is captured after application of a test pattern. Thus, the fail sets not only indicate which scan test of the test set failed, but also, for each failing scan test, which response bit or bits failed (that is, which scan cell captured the unexpected or faulty value). (As used herein, the term “scan test” or “test” refers to the application of a test pattern and the capturing and unloading of the test response to the test pattern.) Typically, diagnostic software compares one or more actual fail sets with simulated fail sets. These simulated fail sets can be created, for example, by injecting one fault at a time from a fault list into a representation of the design-under-test (e.g., based on the netlist of the design under test) and fault simulating each fault for all or some of the scan tests. The simulated fail sets can thus identify which response bit or bits fail for a given test and for a given fault. Actual fail set information can be compared to the simulated fail set information in order to identify faults whose fail behavior is compatible with the observed fail behavior in the actual fail set. Some diagnostic techniques require a complete match to exist between the simulated and actual fail bits before declaring a fault as a potential candidate, whereas other diagnostic techniques allow for some small differences. The potential candidates can then be sorted, for example, by how well each candidate explains the fail/no-fail behavior across a plurality of tests for which fail set data exist (for example, for all or portions of tests of a given test set).
The fault simulation steps that create the simulated fail sets can be performed at various stages of the diagnostic process. For example, the simulated fail sets can be generated before testing, thereby generating a pre-calculated fault dictionary, or as a fail set is being analyzed after testing, thereby resulting in post-test simulation.
FIG. 1 is a block diagram 100 illustrating an exemplary method for fault diagnosis using a pre-calculated fault-dictionary approach for a circuit-under-test having no compression hardware. The exemplary method is divided into three phases: a pre-test processing phase 110, a test phase 112, and a post-test processing phase 114. In the pre-test processing phase 110, fault simulation 120 is performed to generate a fault dictionary 122 comprising entries that indicate what faults may have generated an observed failing response. Fault simulation 120 can be performed, for example, by simulating the presence of one or more faults (defined by a fault list 124) in the design-under-test (defined, for example, by a netlist 126 or other design database) as one or more test patterns 128 are applied to the design-under-test. In FIG. 1, the resulting fault dictionary entries correspond to the full failing test responses (the “uncompressed symptoms”). The resulting dictionary can be stored on computer-readable media for use in diagnostics during the post-test processing phase 114.
In the test phase 112, testing 130 of actual circuits is performed. For example, production or manufacture testing of integrated circuits is performed using one or more testers coupled to the circuits shortly after the integrated circuits are manufactured. Testing 130 may also be performed at any time after manufacturing. Testing 130 can generate one or more failing test responses, which can be compiled and stored as one or more uncompressed fail sets 132.
In the post-test processing stage 114 (which can also occur substantially simultaneously with testing 130), the uncompressed fail sets 132 from testing 130 are compared and matched 140 with entries from the fault dictionary 122. A list of potential fault locations 142 (also referred to as “fault candidates” or “callouts”) is produced as a result of the comparison and matching 140. The list of fault candidates can then be used to help locate the actual fault site on the failing circuit.
FIG. 2 is a block diagram 200 illustrating an exemplary method of diagnosing faults using a post-test simulation approach in which fault dictionaries are dynamically generated. As with FIG. 1, the method illustrated in FIG. 2 is performed for circuits that do not have compression hardware. The method of FIG. 2 comprises two stages: a test stage 210 and a post-test processing stage 212. In the test phase 210, testing 220 of actual circuits is performed. For example, production or manufacture testing of integrated circuits is performed using one or more testers coupled to the circuits shortly after the integrated circuits are manufactured. Testing 220 may also be performed at any time after manufacturing. Testing 220 can generate one or more failing test responses, which can be compiled and stored as one or more uncompressed fail sets 222.
In the post-test processing stage 212 (which can also occur substantially simultaneously with testing 220), the uncompressed fail sets 222 from testing 220 are analyzed by a fault diagnosis tool. The fault diagnosis typically comprises cone tracing 230 from one or more of the failing scan cells identified in the uncompressed fail sets as capturing unexpected values. For example, a backward cone tracing procedure from the observed error locations of the fail set can be performed. The observed error locations correspond to the output and/or scan cell values that do not match the expected response. As a result of cone tracing 230, a partial fault list 232 is generated. Fault simulation 240 is performed using faults from the fault list 232. Fault simulation 240 can be performed, for example, by simulating the presence of the potential faults (defined by the partial fault list 232) in the design-under-test (defined, for example, by a netlist 242 or other design database) as the test patterns 244 that caused the observed failures are applied to the design-under-test. Post-test fault simulation run times are dependent at least in part on the number of faults that must be simulated for each fail set. The potential fault locations to be simulated are ordinarily confined to those in the back-trace cones. Run-times can often be further reduced using logic consistency checking. In general, if the error locations are known exactly or can at least be tightly bounded, the number of fault candidates considered in post-test simulation can be effectively reduced. A dynamic fault dictionary 246 is generated as a result of fault simulation 240. The entries of the dynamic fault dictionary 246 correspond to the full failing test responses (the “uncompressed symptoms”) resulting from the potential faults in the partial fault list. At 250, the uncompressed symptoms are compared and matched with the actual uncompressed fail sets to determine which faults best explain the observed test responses. A list of potential faults locations 252 (also referred to as “fault candidates” or “callouts”) is produced as a result of the comparison and matching 250. The list of potential fault sites can then be used to help locate the actual fault site on the failing circuit.
The use of compression during the testing of integrated circuits has become widespread. In general, compression helps reduce the volume of test data required for even traditional stuck-at test sets. Such sets, for example, often exceed the capacity of automatic test equipment (“ATE”) used to test today's multimillion-gate integrated circuits. Moreover, due to the limited bandwidth between the circuit-under-test (“CUT”) and the ATE, the use of compressed test data and compressed test responses can decrease test time, and thus the test cost.
Accordingly, methods, apparatus, and systems for diagnosing faults from compressed test responses (e.g., from signature generators, such as multiple-input signature registers (“MISRs”)) are desired.